/*
 * Copyright (c) 2023 iQi.Co.Ltd. All rights reserved.
 */
 
using System.Collections.Generic;
using NetProtocol.POD;
using NetProtocol.Enum;
using IQIGame.Onigao.Game;
using IQIGame.Onigao.GamePlay;
using IQIGame.Onigao.Framework;
using System.Threading.Tasks;
using System;

namespace NetProtocol.Server {
	/// <summary>
	/// 关卡逻辑模块
	/// module : levelLogic
	/// </summary>
	public interface SNetLevelLogic : INetServerModule {
		Dictionary<int, MessageHandler> INetServerModule.GetModuleFunction()
        {	
            return new()
            {
                { NetMessageId.levelLogic_ReadyToStart, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.levelLogic_ReadyToStart, "Recv->" + data.ToString());
#endif
		                ReadyToStartRequest _data = (ReadyToStartRequest)data;
						return CS_ReadyToStart(session);
		            } 
            	},
                { NetMessageId.levelLogic_EnterRegion, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.levelLogic_EnterRegion, "Recv->" + data.ToString());
#endif
		                EnterRegionRequest _data = (EnterRegionRequest)data;
						return CS_EnterRegion(session, _data.regionCid, _data.portalId);
		            } 
            	},
                { NetMessageId.levelLogic_Move, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.levelLogic_Move, "Recv->" + data.ToString());
#endif
		                MoveRequest _data = (MoveRequest)data;
		                CS_Move(session, _data.x, _data.y, _data.z);
		                return VoidMessageResult.Instance;
		            } 
            	},
                { NetMessageId.levelLogic_Interact, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.levelLogic_Interact, "Recv->" + data.ToString());
#endif
		                InteractRequest _data = (InteractRequest)data;
						return CS_Interact(session, _data.entityId);
		            } 
            	},
                { NetMessageId.levelLogic_Leave, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.levelLogic_Leave, "Recv->" + data.ToString());
#endif
		                LeaveRequest _data = (LeaveRequest)data;
						return CS_Leave(session, _data.outRegionCid, _data.outPortalMcid, _data.anotherLevelCid);
		            } 
            	},
                { NetMessageId.levelLogic_Jump, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.levelLogic_Jump, "Recv->" + data.ToString());
#endif
		                JumpRequest _data = (JumpRequest)data;
						return CS_Jump(session, _data.entityId, _data.dirX, _data.dirZ);
		            } 
            	},
                { NetMessageId.levelLogic_SwitchPhysicNavMode, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.levelLogic_SwitchPhysicNavMode, "Recv->" + data.ToString());
#endif
		                SwitchPhysicNavModeRequest _data = (SwitchPhysicNavModeRequest)data;
		                CS_SwitchPhysicNavMode(session, _data.isPhysical, _data.x, _data.y, _data.z);
		                return VoidMessageResult.Instance;
		            } 
            	},
                { NetMessageId.levelLogic_TriggerInEntityState, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.levelLogic_TriggerInEntityState, "Recv->" + data.ToString());
#endif
		                TriggerInEntityStateRequest _data = (TriggerInEntityStateRequest)data;
		                CS_TriggerInEntityState(session, _data.entityId, _data.state);
		                return VoidMessageResult.Instance;
		            } 
            	},
                { NetMessageId.levelLogic_RepoStoryDialogSelection, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.levelLogic_RepoStoryDialogSelection, "Recv->" + data.ToString());
#endif
		                RepoStoryDialogSelectionRequest _data = (RepoStoryDialogSelectionRequest)data;
						return CS_RepoStoryDialogSelection(session, _data.selectionIndexes);
		            } 
            	},
                { NetMessageId.levelLogic_GetMapEntities, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.levelLogic_GetMapEntities, "Recv->" + data.ToString());
#endif
		                GetMapEntitiesRequest _data = (GetMapEntitiesRequest)data;
						return CS_GetMapEntities(session, _data.regionCid);
		            } 
            	},
                { NetMessageId.levelLogic_TeleportToEntity, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.levelLogic_TeleportToEntity, "Recv->" + data.ToString());
#endif
		                TeleportToEntityRequest _data = (TeleportToEntityRequest)data;
		                CS_TeleportToEntity(session, _data.entityId);
		                return VoidMessageResult.Instance;
		            } 
            	},
                { NetMessageId.levelLogic_ConfirmItemSubmit, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.levelLogic_ConfirmItemSubmit, "Recv->" + data.ToString());
#endif
		                ConfirmItemSubmitRequest _data = (ConfirmItemSubmitRequest)data;
						return CS_ConfirmItemSubmit(session, _data.itemIdList);
		            } 
            	},
                { NetMessageId.levelLogic_AcceptQuest, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.levelLogic_AcceptQuest, "Recv->" + data.ToString());
#endif
		                AcceptQuestRequest _data = (AcceptQuestRequest)data;
						return CS_AcceptQuest(session, _data.questCid);
		            } 
            	},
                { NetMessageId.levelLogic_RequestRevive, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.levelLogic_RequestRevive, "Recv->" + data.ToString());
#endif
		                RequestReviveRequest _data = (RequestReviveRequest)data;
						return CS_RequestRevive(session);
		            } 
            	},
                { NetMessageId.levelLogic_MarkTrackingEntity, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.levelLogic_MarkTrackingEntity, "Recv->" + data.ToString());
#endif
		                MarkTrackingEntityRequest _data = (MarkTrackingEntityRequest)data;
						return CS_MarkTrackingEntity(session, _data.entityId);
		            } 
            	},
                { NetMessageId.levelLogic_PushEntityArrive, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.levelLogic_PushEntityArrive, "Recv->" + data.ToString());
#endif
		                PushEntityArriveRequest _data = (PushEntityArriveRequest)data;
		                CS_PushEntityArrive(session, _data.entityId, _data.x, _data.y, _data.z);
		                return VoidMessageResult.Instance;
		            } 
            	},
                { NetMessageId.levelLogic_SwitchPhasing, (session, data) =>
		            {
#if ENABLE_NET_LOG || UNITY_EDITOR
						NetProtocolHelper.ServerLog(NetMessageId.levelLogic_SwitchPhasing, "Recv->" + data.ToString());
#endif
		                SwitchPhasingRequest _data = (SwitchPhasingRequest)data;
						return CS_SwitchPhasing(session, _data.phasing, _data.mainPhasingPosX, _data.mainPhasingPosY, _data.mainPhasingPosZ);
		            } 
            	},
            };
        }
        
        Dictionary<int, Func<IReceiveMessage>> INetServerModule.GetModuleRequest() 
        {
	        return new ()
	        {
	        	{NetMessageId.levelLogic_ReadyToStart, ()=> new ReadyToStartRequest()},
	        	{NetMessageId.levelLogic_EnterRegion, ()=> new EnterRegionRequest()},
	        	{NetMessageId.levelLogic_Move, ()=> new MoveRequest()},
	        	{NetMessageId.levelLogic_Interact, ()=> new InteractRequest()},
	        	{NetMessageId.levelLogic_Leave, ()=> new LeaveRequest()},
	        	{NetMessageId.levelLogic_Jump, ()=> new JumpRequest()},
	        	{NetMessageId.levelLogic_SwitchPhysicNavMode, ()=> new SwitchPhysicNavModeRequest()},
	        	{NetMessageId.levelLogic_TriggerInEntityState, ()=> new TriggerInEntityStateRequest()},
	        	{NetMessageId.levelLogic_RepoStoryDialogSelection, ()=> new RepoStoryDialogSelectionRequest()},
	        	{NetMessageId.levelLogic_GetMapEntities, ()=> new GetMapEntitiesRequest()},
	        	{NetMessageId.levelLogic_TeleportToEntity, ()=> new TeleportToEntityRequest()},
	        	{NetMessageId.levelLogic_ConfirmItemSubmit, ()=> new ConfirmItemSubmitRequest()},
	        	{NetMessageId.levelLogic_AcceptQuest, ()=> new AcceptQuestRequest()},
	        	{NetMessageId.levelLogic_RequestRevive, ()=> new RequestReviveRequest()},
	        	{NetMessageId.levelLogic_MarkTrackingEntity, ()=> new MarkTrackingEntityRequest()},
	        	{NetMessageId.levelLogic_PushEntityArrive, ()=> new PushEntityArriveRequest()},
	        	{NetMessageId.levelLogic_SwitchPhasing, ()=> new SwitchPhasingRequest()},
	        };
	    }
        
#region Server-side Interface
		/// <summary>
        /// 
        /// </summary>
	    protected ReadyToStartResult CS_ReadyToStart(ISession session);
		/// <summary>
        /// 地图UI切换地区
        /// </summary>
	    protected EnterRegionResult CS_EnterRegion(ISession session, int regionCid, int portalId);
		/// <summary>
        /// 
        /// </summary>
    	protected bool CS_Move(ISession session, float x, float y, float z);
		/// <summary>
        /// 
        /// </summary>
	    protected InteractResult CS_Interact(ISession session, int entityId);
		/// <summary>
        /// 离开关卡，outRegionCid：离开关卡后到达的地方的regionCid，outPortalMcid：传送们mcid，anotherLevelCid：另一个关卡的cid，中转参数，notify以后客户端处理关卡到关卡
        /// </summary>
	    protected LeaveResult CS_Leave(ISession session, int outRegionCid, int outPortalMcid, int anotherLevelCid);
		/// <summary>
        /// 跳跃
        /// </summary>
	    protected JumpResult CS_Jump(ISession session, int entityId, float dirX, float dirZ);
		/// <summary>
        /// 改变寻路模式：物理/网格，xyz代表离开物理寻路模式，切回网格模式时所处的位置
        /// </summary>
    	protected bool CS_SwitchPhysicNavMode(ISession session, bool isPhysical, float x, float y, float z);
		/// <summary>
        /// 触发陷阱
        /// </summary>
    	protected bool CS_TriggerInEntityState(ISession session, int entityId, int state);
		/// <summary>
        /// 对话选项上报，selectionIndexes玩家选择的选项索引
        /// </summary>
	    protected RepoStoryDialogSelectionResult CS_RepoStoryDialogSelection(ISession session, List<int> selectionIndexes);
		/// <summary>
        /// 
        /// </summary>
	    protected GetMapEntitiesResult CS_GetMapEntities(ISession session, int regionCid);
		/// <summary>
        /// 
        /// </summary>
    	protected bool CS_TeleportToEntity(ISession session, int entityId);
		/// <summary>
        /// 
        /// </summary>
	    protected ConfirmItemSubmitResult CS_ConfirmItemSubmit(ISession session, List<long> itemIdList);
		/// <summary>
        /// 
        /// </summary>
	    protected AcceptQuestResult CS_AcceptQuest(ISession session, int questCid);
		/// <summary>
        /// 
        /// </summary>
	    protected RequestReviveResult CS_RequestRevive(ISession session);
		/// <summary>
        /// 
        /// </summary>
	    protected MarkTrackingEntityResult CS_MarkTrackingEntity(ISession session, int entityId);
		/// <summary>
        /// 
        /// </summary>
    	protected bool CS_PushEntityArrive(ISession session, int entityId, int x, int y, int z);
		/// <summary>
        /// 
        /// </summary>
	    protected SwitchPhasingResult CS_SwitchPhasing(ISession session, GameScenePhasing phasing, int mainPhasingPosX, int mainPhasingPosY, int mainPhasingPosZ);
#endregion
#region Client-side Interface
		/// <summary>
        ///  所有玩家连接成功，初始化数据
        /// </summary>
		public bool SC_NotifyEnter(ISession session, EnterLevelPOD level){
	        return NetProtocolHelper.SendMessage(session, new NotifyEnter(level));
	    }
	    public void SC_NotifyEnter_Broadcast(List<ISession> sessions, EnterLevelPOD level){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyEnter(level));
	    }
		/// <summary>
        /// 
        /// </summary>
        public ReadyToStartResult SC_ReadyToStartResult(Task<ReadyToStartResult> future){return new ReadyToStartResult(future);}
        public ReadyToStartResult SC_ReadyToStartResult(int code){return new ReadyToStartResult(code);}
		/// <summary>
        ///  所有玩家Ready
        /// </summary>
		public bool SC_NotifyStart(ISession session){
	        return NetProtocolHelper.SendMessage(session, new NotifyStart());
	    }
	    public void SC_NotifyStart_Broadcast(List<ISession> sessions){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyStart());
	    }
		/// <summary>
        ///  通知玩家退出关卡，outRegionCid：离开关卡后到达的地方的regionCid，outPortalMcid：传送们mcid，anotherLevelCid：另一个关卡的cid，客户端处理关卡到关卡
        /// </summary>
		public bool SC_NotifyLeave(ISession session, int outRegionCid, int outPortalMcid, int anotherLevelCid){
	        return NetProtocolHelper.SendMessage(session, new NotifyLeave(outRegionCid, outPortalMcid, anotherLevelCid));
	    }
	    public void SC_NotifyLeave_Broadcast(List<ISession> sessions, int outRegionCid, int outPortalMcid, int anotherLevelCid){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyLeave(outRegionCid, outPortalMcid, anotherLevelCid));
	    }
		/// <summary>
        /// 地图UI切换地区的回复
        /// </summary>
        public EnterRegionResult SC_EnterRegionResult(Task<EnterRegionResult> future){return new EnterRegionResult(future);}
        public EnterRegionResult SC_EnterRegionResult(int code, int regionCid, int portalId){return new EnterRegionResult(code, regionCid, portalId);}
        public EnterRegionResult SC_EnterRegionResult(int code){return new EnterRegionResult(code);}
		/// <summary>
        /// 
        /// </summary>
		public bool SC_NotifyEnterRegion(ISession session, LevelRegionPOD region){
	        return NetProtocolHelper.SendMessage(session, new NotifyEnterRegion(region));
	    }
	    public void SC_NotifyEnterRegion_Broadcast(List<ISession> sessions, LevelRegionPOD region){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyEnterRegion(region));
	    }
		/// <summary>
        /// dirType为1表示移动时朝向一直不变，为2表示dir.y不变
        /// </summary>
		public bool SC_NotifySyncPosition(ISession session, LevelMoveReason reason, int entityId, LevelEntityType entityType, float x, float y, float z, float speedRatio, byte dirType){
	        return NetProtocolHelper.SendMessage(session, new NotifySyncPosition(reason, entityId, entityType, x, y, z, speedRatio, dirType));
	    }
	    public void SC_NotifySyncPosition_Broadcast(List<ISession> sessions, LevelMoveReason reason, int entityId, LevelEntityType entityType, float x, float y, float z, float speedRatio, byte dirType){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifySyncPosition(reason, entityId, entityType, x, y, z, speedRatio, dirType));
	    }
		/// <summary>
        /// 
        /// </summary>
		public bool SC_UpdateEntities(ISession session, List<LevelEntityPOD> modifiedList, List<int> removedList, bool isPlayDieWhenRemove){
	        return NetProtocolHelper.SendMessage(session, new UpdateEntities(modifiedList, removedList, isPlayDieWhenRemove));
	    }
	    public void SC_UpdateEntities_Broadcast(List<ISession> sessions, List<LevelEntityPOD> modifiedList, List<int> removedList, bool isPlayDieWhenRemove){
	        NetProtocolHelper.BroadcastMessage(sessions, new UpdateEntities(modifiedList, removedList, isPlayDieWhenRemove));
	    }
		/// <summary>
        /// 
        /// </summary>
        public InteractResult SC_InteractResult(Task<InteractResult> future){return new InteractResult(future);}
        public InteractResult SC_InteractResult(int code, bool anyExecDone){return new InteractResult(code, anyExecDone);}
        public InteractResult SC_InteractResult(int code){return new InteractResult(code);}
		/// <summary>
        /// 
        /// </summary>
        public LeaveResult SC_LeaveResult(Task<LeaveResult> future){return new LeaveResult(future);}
        public LeaveResult SC_LeaveResult(int code){return new LeaveResult(code);}
		/// <summary>
        /// 
        /// </summary>
        public JumpResult SC_JumpResult(Task<JumpResult> future){return new JumpResult(future);}
        public JumpResult SC_JumpResult(int code){return new JumpResult(code);}
		/// <summary>
        /// 通知战斗结算
        /// </summary>
		public bool SC_NotifyBattleSettlement(ISession session, BattleSettlementPOD settlementPOD){
	        return NetProtocolHelper.SendMessage(session, new NotifyBattleSettlement(settlementPOD));
	    }
	    public void SC_NotifyBattleSettlement_Broadcast(List<ISession> sessions, BattleSettlementPOD settlementPOD){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyBattleSettlement(settlementPOD));
	    }
		/// <summary>
        /// 显示对话气泡
        /// </summary>
		public bool SC_NotifyShowSpeechBubble(ISession session, int entityId, int bubbleGroupId, List<int> validBubbleIds){
	        return NetProtocolHelper.SendMessage(session, new NotifyShowSpeechBubble(entityId, bubbleGroupId, validBubbleIds));
	    }
	    public void SC_NotifyShowSpeechBubble_Broadcast(List<ISession> sessions, int entityId, int bubbleGroupId, List<int> validBubbleIds){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyShowSpeechBubble(entityId, bubbleGroupId, validBubbleIds));
	    }
		/// <summary>
        /// 切换实体激活状态
        /// </summary>
		public bool SC_UpdateEntityActivation(ISession session, List<int> entityIdList, bool isActive, int animActionId, bool isSetRotation, int rotationY){
	        return NetProtocolHelper.SendMessage(session, new UpdateEntityActivation(entityIdList, isActive, animActionId, isSetRotation, rotationY));
	    }
	    public void SC_UpdateEntityActivation_Broadcast(List<ISession> sessions, List<int> entityIdList, bool isActive, int animActionId, bool isSetRotation, int rotationY){
	        NetProtocolHelper.BroadcastMessage(sessions, new UpdateEntityActivation(entityIdList, isActive, animActionId, isSetRotation, rotationY));
	    }
		/// <summary>
        /// 通知电梯开始或停止运动
        /// </summary>
		public bool SC_NotifyActivateElevator(ISession session, int elevatorEntityId, int targetFloor, bool isRidingMode, bool isMoveState){
	        return NetProtocolHelper.SendMessage(session, new NotifyActivateElevator(elevatorEntityId, targetFloor, isRidingMode, isMoveState));
	    }
	    public void SC_NotifyActivateElevator_Broadcast(List<ISession> sessions, int elevatorEntityId, int targetFloor, bool isRidingMode, bool isMoveState){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyActivateElevator(elevatorEntityId, targetFloor, isRidingMode, isMoveState));
	    }
		/// <summary>
        /// 通知客户端开始播放镜头动画
        /// </summary>
		public bool SC_NotifyStartCameraMotion(ISession session, int levelScreenSwitchCid){
	        return NetProtocolHelper.SendMessage(session, new NotifyStartCameraMotion(levelScreenSwitchCid));
	    }
	    public void SC_NotifyStartCameraMotion_Broadcast(List<ISession> sessions, int levelScreenSwitchCid){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyStartCameraMotion(levelScreenSwitchCid));
	    }
		/// <summary>
        /// 阻挡生效状态变化
        /// </summary>
		public bool SC_NotifyEntityObstacleChange(ISession session, List<int> entityIds, bool isObstacleActive){
	        return NetProtocolHelper.SendMessage(session, new NotifyEntityObstacleChange(entityIds, isObstacleActive));
	    }
	    public void SC_NotifyEntityObstacleChange_Broadcast(List<ISession> sessions, List<int> entityIds, bool isObstacleActive){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyEntityObstacleChange(entityIds, isObstacleActive));
	    }
		/// <summary>
        /// 实体播放动作动画
        /// </summary>
		public bool SC_NotifyPlayEntityAnimAction(ISession session, List<int> entityIds, int actionId){
	        return NetProtocolHelper.SendMessage(session, new NotifyPlayEntityAnimAction(entityIds, actionId));
	    }
	    public void SC_NotifyPlayEntityAnimAction_Broadcast(List<ISession> sessions, List<int> entityIds, int actionId){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyPlayEntityAnimAction(entityIds, actionId));
	    }
		/// <summary>
        /// 更新关卡时间显示
        /// </summary>
		public bool SC_NotifyLevelTimeShowChange(ISession session, int timeHour){
	        return NetProtocolHelper.SendMessage(session, new NotifyLevelTimeShowChange(timeHour));
	    }
	    public void SC_NotifyLevelTimeShowChange_Broadcast(List<ISession> sessions, int timeHour){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyLevelTimeShowChange(timeHour));
	    }
		/// <summary>
        /// 改变场景特效（天气等）
        /// </summary>
		public bool SC_NotifyChangeSceneEffect(ISession session, int entityId, int sceneEffectId, bool isAdd){
	        return NetProtocolHelper.SendMessage(session, new NotifyChangeSceneEffect(entityId, sceneEffectId, isAdd));
	    }
	    public void SC_NotifyChangeSceneEffect_Broadcast(List<ISession> sessions, int entityId, int sceneEffectId, bool isAdd){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyChangeSceneEffect(entityId, sceneEffectId, isAdd));
	    }
		/// <summary>
        /// 更新实体朝向
        /// </summary>
		public bool SC_UpdateEntityRotationY(ISession session, int entityId, LevelEntityType entityType, int rotationY){
	        return NetProtocolHelper.SendMessage(session, new UpdateEntityRotationY(entityId, entityType, rotationY));
	    }
	    public void SC_UpdateEntityRotationY_Broadcast(List<ISession> sessions, int entityId, LevelEntityType entityType, int rotationY){
	        NetProtocolHelper.BroadcastMessage(sessions, new UpdateEntityRotationY(entityId, entityType, rotationY));
	    }
		/// <summary>
        /// 通知激活或关闭存档点
        /// </summary>
		public bool SC_NotifyActiveCheckPoint(ISession session, int entityId, bool isActive){
	        return NetProtocolHelper.SendMessage(session, new NotifyActiveCheckPoint(entityId, isActive));
	    }
	    public void SC_NotifyActiveCheckPoint_Broadcast(List<ISession> sessions, int entityId, bool isActive){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyActiveCheckPoint(entityId, isActive));
	    }
		/// <summary>
        /// 通知buff变化
        /// </summary>
		public bool SC_NotifyBuffChange(ISession session, List<LevelBuffChangePOD> changes){
	        return NetProtocolHelper.SendMessage(session, new NotifyBuffChange(changes));
	    }
	    public void SC_NotifyBuffChange_Broadcast(List<ISession> sessions, List<LevelBuffChangePOD> changes){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyBuffChange(changes));
	    }
		/// <summary>
        /// 通知策划自定义的，优先级最高的BGM的变化
        /// </summary>
		public bool SC_NotifyCustomBgmChange(ISession session, int bgmAudioCid){
	        return NetProtocolHelper.SendMessage(session, new NotifyCustomBgmChange(bgmAudioCid));
	    }
	    public void SC_NotifyCustomBgmChange_Broadcast(List<ISession> sessions, int bgmAudioCid){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyCustomBgmChange(bgmAudioCid));
	    }
		/// <summary>
        /// 开启故事（npc对话）表现
        /// </summary>
		public bool SC_NotifyStartStoryDialog(ISession session, int cid, int jumpCid, int entityId){
	        return NetProtocolHelper.SendMessage(session, new NotifyStartStoryDialog(cid, jumpCid, entityId));
	    }
	    public void SC_NotifyStartStoryDialog_Broadcast(List<ISession> sessions, int cid, int jumpCid, int entityId){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyStartStoryDialog(cid, jumpCid, entityId));
	    }
		/// <summary>
        /// 对话选项Response
        /// </summary>
        public RepoStoryDialogSelectionResult SC_RepoStoryDialogSelectionResult(Task<RepoStoryDialogSelectionResult> future){return new RepoStoryDialogSelectionResult(future);}
        public RepoStoryDialogSelectionResult SC_RepoStoryDialogSelectionResult(int code){return new RepoStoryDialogSelectionResult(code);}
		/// <summary>
        /// 通知改变关卡参数，直接按照key覆盖value
        /// </summary>
		public bool SC_NotifyChangeLevelParam(ISession session, int key, int value){
	        return NetProtocolHelper.SendMessage(session, new NotifyChangeLevelParam(key, value));
	    }
	    public void SC_NotifyChangeLevelParam_Broadcast(List<ISession> sessions, int key, int value){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyChangeLevelParam(key, value));
	    }
		/// <summary>
        /// 通知跟随英雄的实体变化
        /// </summary>
		public bool SC_NotifyHeroFollowerChange(ISession session, int id){
	        return NetProtocolHelper.SendMessage(session, new NotifyHeroFollowerChange(id));
	    }
	    public void SC_NotifyHeroFollowerChange_Broadcast(List<ISession> sessions, int id){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyHeroFollowerChange(id));
	    }
		/// <summary>
        /// 通知改变当前客户端玩家的相机参数，0代表还原
        /// </summary>
		public bool SC_NotifyChangePlayerCamera(ISession session, int cameraCid){
	        return NetProtocolHelper.SendMessage(session, new NotifyChangePlayerCamera(cameraCid));
	    }
	    public void SC_NotifyChangePlayerCamera_Broadcast(List<ISession> sessions, int cameraCid){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyChangePlayerCamera(cameraCid));
	    }
		/// <summary>
        /// 通知天气变化
        /// </summary>
		public bool SC_NotifyChangeWeather(ISession session, int id, int weatherType){
	        return NetProtocolHelper.SendMessage(session, new NotifyChangeWeather(id, weatherType));
	    }
	    public void SC_NotifyChangeWeather_Broadcast(List<ISession> sessions, int id, int weatherType){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyChangeWeather(id, weatherType));
	    }
		/// <summary>
        /// 
        /// </summary>
        public GetMapEntitiesResult SC_GetMapEntitiesResult(Task<GetMapEntitiesResult> future){return new GetMapEntitiesResult(future);}
        public GetMapEntitiesResult SC_GetMapEntitiesResult(int code, List<LevelEntityMapPOD> entities){return new GetMapEntitiesResult(code, entities);}
        public GetMapEntitiesResult SC_GetMapEntitiesResult(int code){return new GetMapEntitiesResult(code);}
		/// <summary>
        /// 通知怪物警戒值变化，alertValue(0-100)
        /// </summary>
		public bool SC_UpdateEntityAlert(ISession session, int entityId, int targetEntityId, int alertValue){
	        return NetProtocolHelper.SendMessage(session, new UpdateEntityAlert(entityId, targetEntityId, alertValue));
	    }
	    public void SC_UpdateEntityAlert_Broadcast(List<ISession> sessions, int entityId, int targetEntityId, int alertValue){
	        NetProtocolHelper.BroadcastMessage(sessions, new UpdateEntityAlert(entityId, targetEntityId, alertValue));
	    }
		/// <summary>
        /// 更新载具，如果没有载具id为0
        /// </summary>
		public bool SC_UpdateHeroCarrier(ISession session, int heroEntityId, int entityId, bool isRemoved){
	        return NetProtocolHelper.SendMessage(session, new UpdateHeroCarrier(heroEntityId, entityId, isRemoved));
	    }
	    public void SC_UpdateHeroCarrier_Broadcast(List<ISession> sessions, int heroEntityId, int entityId, bool isRemoved){
	        NetProtocolHelper.BroadcastMessage(sessions, new UpdateHeroCarrier(heroEntityId, entityId, isRemoved));
	    }
		/// <summary>
        /// 更新队长
        /// </summary>
		public bool SC_NotifyLeaderHeroChanged(ISession session, int heroEntityId, LevelHeroPOD leaderHeroPOD){
	        return NetProtocolHelper.SendMessage(session, new NotifyLeaderHeroChanged(heroEntityId, leaderHeroPOD));
	    }
	    public void SC_NotifyLeaderHeroChanged_Broadcast(List<ISession> sessions, int heroEntityId, LevelHeroPOD leaderHeroPOD){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyLeaderHeroChanged(heroEntityId, leaderHeroPOD));
	    }
		/// <summary>
        /// 
        /// </summary>
		public bool SC_NotifyStartItemSubmit(ISession session, int itemSubmitCid){
	        return NetProtocolHelper.SendMessage(session, new NotifyStartItemSubmit(itemSubmitCid));
	    }
	    public void SC_NotifyStartItemSubmit_Broadcast(List<ISession> sessions, int itemSubmitCid){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyStartItemSubmit(itemSubmitCid));
	    }
		/// <summary>
        /// 
        /// </summary>
        public ConfirmItemSubmitResult SC_ConfirmItemSubmitResult(Task<ConfirmItemSubmitResult> future){return new ConfirmItemSubmitResult(future);}
        public ConfirmItemSubmitResult SC_ConfirmItemSubmitResult(int code, bool isSuccess){return new ConfirmItemSubmitResult(code, isSuccess);}
        public ConfirmItemSubmitResult SC_ConfirmItemSubmitResult(int code){return new ConfirmItemSubmitResult(code);}
		/// <summary>
        /// 
        /// </summary>
        public AcceptQuestResult SC_AcceptQuestResult(Task<AcceptQuestResult> future){return new AcceptQuestResult(future);}
        public AcceptQuestResult SC_AcceptQuestResult(int code){return new AcceptQuestResult(code);}
		/// <summary>
        /// 
        /// </summary>
		public bool SC_NotifyDrop(ISession session, int srcEntityId, List<ItemShowPOD> items){
	        return NetProtocolHelper.SendMessage(session, new NotifyDrop(srcEntityId, items));
	    }
	    public void SC_NotifyDrop_Broadcast(List<ISession> sessions, int srcEntityId, List<ItemShowPOD> items){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyDrop(srcEntityId, items));
	    }
		/// <summary>
        /// 
        /// </summary>
		public bool SC_NotifyClearHeroBuff(ISession session, long pid, long heroId){
	        return NetProtocolHelper.SendMessage(session, new NotifyClearHeroBuff(pid, heroId));
	    }
	    public void SC_NotifyClearHeroBuff_Broadcast(List<ISession> sessions, long pid, long heroId){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyClearHeroBuff(pid, heroId));
	    }
		/// <summary>
        /// 
        /// </summary>
		public bool SC_NotifyTeamWipe(ISession session, long pid, long leaderHeroId){
	        return NetProtocolHelper.SendMessage(session, new NotifyTeamWipe(pid, leaderHeroId));
	    }
	    public void SC_NotifyTeamWipe_Broadcast(List<ISession> sessions, long pid, long leaderHeroId){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyTeamWipe(pid, leaderHeroId));
	    }
		/// <summary>
        /// 
        /// </summary>
		public bool SC_NotifyHeroesAttr(ISession session, long pid, List<LevelHeroAttrSyncPOD> heroAttrs, AttrChangeReason reason){
	        return NetProtocolHelper.SendMessage(session, new NotifyHeroesAttr(pid, heroAttrs, reason));
	    }
	    public void SC_NotifyHeroesAttr_Broadcast(List<ISession> sessions, long pid, List<LevelHeroAttrSyncPOD> heroAttrs, AttrChangeReason reason){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyHeroesAttr(pid, heroAttrs, reason));
	    }
		/// <summary>
        /// 
        /// </summary>
		public bool SC_NotifyPlayOrStopEntityEffect(ISession session, int singleEntityId, List<int> multiEntityIds, int effectResCid, int bindPointCid, bool isAdd){
	        return NetProtocolHelper.SendMessage(session, new NotifyPlayOrStopEntityEffect(singleEntityId, multiEntityIds, effectResCid, bindPointCid, isAdd));
	    }
	    public void SC_NotifyPlayOrStopEntityEffect_Broadcast(List<ISession> sessions, int singleEntityId, List<int> multiEntityIds, int effectResCid, int bindPointCid, bool isAdd){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyPlayOrStopEntityEffect(singleEntityId, multiEntityIds, effectResCid, bindPointCid, isAdd));
	    }
		/// <summary>
        /// 玩家从团灭复活，复活所有英雄（视需求看以后要不要做单英雄复活）
        /// </summary>
		public bool SC_NotifyRevive(ISession session, long pid){
	        return NetProtocolHelper.SendMessage(session, new NotifyRevive(pid));
	    }
	    public void SC_NotifyRevive_Broadcast(List<ISession> sessions, long pid){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyRevive(pid));
	    }
		/// <summary>
        /// 
        /// </summary>
        public RequestReviveResult SC_RequestReviveResult(Task<RequestReviveResult> future){return new RequestReviveResult(future);}
        public RequestReviveResult SC_RequestReviveResult(int code){return new RequestReviveResult(code);}
		/// <summary>
        /// 
        /// </summary>
        public MarkTrackingEntityResult SC_MarkTrackingEntityResult(Task<MarkTrackingEntityResult> future){return new MarkTrackingEntityResult(future);}
        public MarkTrackingEntityResult SC_MarkTrackingEntityResult(int code){return new MarkTrackingEntityResult(code);}
		/// <summary>
        /// 
        /// </summary>
		public bool SC_NotifyPushEntity(ISession session, int entityId, int maxDistance){
	        return NetProtocolHelper.SendMessage(session, new NotifyPushEntity(entityId, maxDistance));
	    }
	    public void SC_NotifyPushEntity_Broadcast(List<ISession> sessions, int entityId, int maxDistance){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyPushEntity(entityId, maxDistance));
	    }
		/// <summary>
        /// 
        /// </summary>
        public SwitchPhasingResult SC_SwitchPhasingResult(Task<SwitchPhasingResult> future){return new SwitchPhasingResult(future);}
        public SwitchPhasingResult SC_SwitchPhasingResult(int code){return new SwitchPhasingResult(code);}
		/// <summary>
        /// 
        /// </summary>
		public bool SC_NotifyStartMiniGame(ISession session, LevelMiniGameType type, int miniGameCid){
	        return NetProtocolHelper.SendMessage(session, new NotifyStartMiniGame(type, miniGameCid));
	    }
	    public void SC_NotifyStartMiniGame_Broadcast(List<ISession> sessions, LevelMiniGameType type, int miniGameCid){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyStartMiniGame(type, miniGameCid));
	    }
		/// <summary>
        /// 
        /// </summary>
		public bool SC_NotifyChangeEntityAudio(ISession session, int entityId, int audioCid){
	        return NetProtocolHelper.SendMessage(session, new NotifyChangeEntityAudio(entityId, audioCid));
	    }
	    public void SC_NotifyChangeEntityAudio_Broadcast(List<ISession> sessions, int entityId, int audioCid){
	        NetProtocolHelper.BroadcastMessage(sessions, new NotifyChangeEntityAudio(entityId, audioCid));
	    }
#endregion

#region Messages
	public class NotifyEnter : MessageNotify {
		private EnterLevelPOD level;
		public NotifyEnter(EnterLevelPOD level) {
		    this.level = level;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyEnter;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyEnter;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_pod(level);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyEnter { "
			+ "level="
			+ level
			+" }";
		}
	}
	public class ReadyToStartResult : MessageResult {
	    public ReadyToStartResult(Task<ReadyToStartResult> future): base(future) { }
		public ReadyToStartResult(int code): base(code) { }
		public new ReadyToStartResult SetDelayCall(Action delayCall) { base.SetDelayCall(delayCall); return this; }
        public override MessageResult GetFutureResult(Task task) { return ((Task<ReadyToStartResult>)task).Result; }
		public override int GetMessageId() {return NetMessageId.levelLogic_ReadyToStartResult;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_ReadyToStartResult;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(code);
			return si_p;
		}
		public override string ToString() {
    		return "LevelLogic.SC_ReadyToStartResult { "
			+ "code="
			+ code
			+" }";
		}
	}
	public class NotifyStart : MessageNotify {
		public NotifyStart() {
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyStart;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyStart;
			si_p.StartWrite();
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyStart { "
			+" }";
		}
	}
	public class NotifyLeave : MessageNotify {
		private int outRegionCid;
		private int outPortalMcid;
		private int anotherLevelCid;
		public NotifyLeave(int outRegionCid, int outPortalMcid, int anotherLevelCid) {
		    this.outRegionCid = outRegionCid;
		    this.outPortalMcid = outPortalMcid;
		    this.anotherLevelCid = anotherLevelCid;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyLeave;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyLeave;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(outRegionCid);
			_out.Write_int(outPortalMcid);
			_out.Write_int(anotherLevelCid);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyLeave { "
			+ "outRegionCid="
			+ outRegionCid
			+ ", outPortalMcid="
			+ outPortalMcid
			+ ", anotherLevelCid="
			+ anotherLevelCid
			+" }";
		}
	}
	public class EnterRegionResult : MessageResult {
	    private int regionCid;
	    private int portalId;
	    public EnterRegionResult(Task<EnterRegionResult> future): base(future) { }
		public EnterRegionResult(int code): base(code) { }
		public new EnterRegionResult SetDelayCall(Action delayCall) { base.SetDelayCall(delayCall); return this; }
	    internal EnterRegionResult(int code, int regionCid, int portalId){
	        this.code = code;
	        this.regionCid = regionCid;
	        this.portalId = portalId;
	    }
        public override MessageResult GetFutureResult(Task task) { return ((Task<EnterRegionResult>)task).Result; }
		public override int GetMessageId() {return NetMessageId.levelLogic_EnterRegionResult;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_EnterRegionResult;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(code);
			_out.Write_int(regionCid);
			_out.Write_int(portalId);
			return si_p;
		}
		public override string ToString() {
    		return "LevelLogic.SC_EnterRegionResult { "
			+ "code="
			+ code
			+ ", regionCid="
			+ regionCid
			+ ", portalId="
			+ portalId
			+" }";
		}
	}
	public class NotifyEnterRegion : MessageNotify {
		private LevelRegionPOD region;
		public NotifyEnterRegion(LevelRegionPOD region) {
		    this.region = region;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyEnterRegion;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyEnterRegion;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_pod(region);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyEnterRegion { "
			+ "region="
			+ region
			+" }";
		}
	}
	public class NotifySyncPosition : MessageNotify {
		private LevelMoveReason reason;
		private int entityId;
		private LevelEntityType entityType;
		private float x;
		private float y;
		private float z;
		private float speedRatio;
		private byte dirType;
		public NotifySyncPosition(LevelMoveReason reason, int entityId, LevelEntityType entityType, float x, float y, float z, float speedRatio, byte dirType) {
		    this.reason = reason;
		    this.entityId = entityId;
		    this.entityType = entityType;
		    this.x = x;
		    this.y = y;
		    this.z = z;
		    this.speedRatio = speedRatio;
		    this.dirType = dirType;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifySyncPosition;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifySyncPosition;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_byte((sbyte)reason);
			_out.Write_int(entityId);
			_out.Write_byte((sbyte)entityType);
			_out.Write_float(x);
			_out.Write_float(y);
			_out.Write_float(z);
			_out.Write_float(speedRatio);
			_out.Write_ubyte(dirType);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifySyncPosition { "
			+ "reason="
			+ reason
			+ ", entityId="
			+ entityId
			+ ", entityType="
			+ entityType
			+ ", x="
			+ x
			+ ", y="
			+ y
			+ ", z="
			+ z
			+ ", speedRatio="
			+ speedRatio
			+ ", dirType="
			+ dirType
			+" }";
		}
	}
	public class UpdateEntities : MessageNotify {
		private List<LevelEntityPOD> modifiedList;
		private List<int> removedList;
		private bool isPlayDieWhenRemove;
		public UpdateEntities(List<LevelEntityPOD> modifiedList, List<int> removedList, bool isPlayDieWhenRemove) {
		    this.modifiedList = modifiedList == null ? null : new (modifiedList);
		    this.removedList = removedList == null ? null : new (removedList);
		    this.isPlayDieWhenRemove = isPlayDieWhenRemove;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_UpdateEntities;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_UpdateEntities;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_list_pod(modifiedList);
			_out.Write_list_int(removedList);	
			_out.Write_boolean(isPlayDieWhenRemove);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_UpdateEntities { "
			+ "modifiedList="
			+ modifiedList.ToString<LevelEntityPOD>()
			+ ", removedList="
			+ removedList.ToString<int>()
			+ ", isPlayDieWhenRemove="
			+ isPlayDieWhenRemove
			+" }";
		}
	}
	public class InteractResult : MessageResult {
	    private bool anyExecDone;
	    public InteractResult(Task<InteractResult> future): base(future) { }
		public InteractResult(int code): base(code) { }
		public new InteractResult SetDelayCall(Action delayCall) { base.SetDelayCall(delayCall); return this; }
	    internal InteractResult(int code, bool anyExecDone){
	        this.code = code;
	        this.anyExecDone = anyExecDone;
	    }
        public override MessageResult GetFutureResult(Task task) { return ((Task<InteractResult>)task).Result; }
		public override int GetMessageId() {return NetMessageId.levelLogic_InteractResult;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_InteractResult;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(code);
			_out.Write_boolean(anyExecDone);
			return si_p;
		}
		public override string ToString() {
    		return "LevelLogic.SC_InteractResult { "
			+ "code="
			+ code
			+ ", anyExecDone="
			+ anyExecDone
			+" }";
		}
	}
	public class LeaveResult : MessageResult {
	    public LeaveResult(Task<LeaveResult> future): base(future) { }
		public LeaveResult(int code): base(code) { }
		public new LeaveResult SetDelayCall(Action delayCall) { base.SetDelayCall(delayCall); return this; }
        public override MessageResult GetFutureResult(Task task) { return ((Task<LeaveResult>)task).Result; }
		public override int GetMessageId() {return NetMessageId.levelLogic_LeaveResult;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_LeaveResult;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(code);
			return si_p;
		}
		public override string ToString() {
    		return "LevelLogic.SC_LeaveResult { "
			+ "code="
			+ code
			+" }";
		}
	}
	public class JumpResult : MessageResult {
	    public JumpResult(Task<JumpResult> future): base(future) { }
		public JumpResult(int code): base(code) { }
		public new JumpResult SetDelayCall(Action delayCall) { base.SetDelayCall(delayCall); return this; }
        public override MessageResult GetFutureResult(Task task) { return ((Task<JumpResult>)task).Result; }
		public override int GetMessageId() {return NetMessageId.levelLogic_JumpResult;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_JumpResult;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(code);
			return si_p;
		}
		public override string ToString() {
    		return "LevelLogic.SC_JumpResult { "
			+ "code="
			+ code
			+" }";
		}
	}
	public class NotifyBattleSettlement : MessageNotify {
		private BattleSettlementPOD settlementPOD;
		public NotifyBattleSettlement(BattleSettlementPOD settlementPOD) {
		    this.settlementPOD = settlementPOD;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyBattleSettlement;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyBattleSettlement;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_pod(settlementPOD);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyBattleSettlement { "
			+ "settlementPOD="
			+ settlementPOD
			+" }";
		}
	}
	public class NotifyShowSpeechBubble : MessageNotify {
		private int entityId;
		private int bubbleGroupId;
		private List<int> validBubbleIds;
		public NotifyShowSpeechBubble(int entityId, int bubbleGroupId, List<int> validBubbleIds) {
		    this.entityId = entityId;
		    this.bubbleGroupId = bubbleGroupId;
		    this.validBubbleIds = validBubbleIds == null ? null : new (validBubbleIds);
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyShowSpeechBubble;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyShowSpeechBubble;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(entityId);
			_out.Write_int(bubbleGroupId);
			_out.Write_list_int(validBubbleIds);	
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyShowSpeechBubble { "
			+ "entityId="
			+ entityId
			+ ", bubbleGroupId="
			+ bubbleGroupId
			+ ", validBubbleIds="
			+ validBubbleIds.ToString<int>()
			+" }";
		}
	}
	public class UpdateEntityActivation : MessageNotify {
		private List<int> entityIdList;
		private bool isActive;
		private int animActionId;
		private bool isSetRotation;
		private int rotationY;
		public UpdateEntityActivation(List<int> entityIdList, bool isActive, int animActionId, bool isSetRotation, int rotationY) {
		    this.entityIdList = entityIdList == null ? null : new (entityIdList);
		    this.isActive = isActive;
		    this.animActionId = animActionId;
		    this.isSetRotation = isSetRotation;
		    this.rotationY = rotationY;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_UpdateEntityActivation;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_UpdateEntityActivation;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_list_int(entityIdList);	
			_out.Write_boolean(isActive);
			_out.Write_int(animActionId);
			_out.Write_boolean(isSetRotation);
			_out.Write_int(rotationY);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_UpdateEntityActivation { "
			+ "entityIdList="
			+ entityIdList.ToString<int>()
			+ ", isActive="
			+ isActive
			+ ", animActionId="
			+ animActionId
			+ ", isSetRotation="
			+ isSetRotation
			+ ", rotationY="
			+ rotationY
			+" }";
		}
	}
	public class NotifyActivateElevator : MessageNotify {
		private int elevatorEntityId;
		private int targetFloor;
		private bool isRidingMode;
		private bool isMoveState;
		public NotifyActivateElevator(int elevatorEntityId, int targetFloor, bool isRidingMode, bool isMoveState) {
		    this.elevatorEntityId = elevatorEntityId;
		    this.targetFloor = targetFloor;
		    this.isRidingMode = isRidingMode;
		    this.isMoveState = isMoveState;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyActivateElevator;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyActivateElevator;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(elevatorEntityId);
			_out.Write_int(targetFloor);
			_out.Write_boolean(isRidingMode);
			_out.Write_boolean(isMoveState);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyActivateElevator { "
			+ "elevatorEntityId="
			+ elevatorEntityId
			+ ", targetFloor="
			+ targetFloor
			+ ", isRidingMode="
			+ isRidingMode
			+ ", isMoveState="
			+ isMoveState
			+" }";
		}
	}
	public class NotifyStartCameraMotion : MessageNotify {
		private int levelScreenSwitchCid;
		public NotifyStartCameraMotion(int levelScreenSwitchCid) {
		    this.levelScreenSwitchCid = levelScreenSwitchCid;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyStartCameraMotion;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyStartCameraMotion;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(levelScreenSwitchCid);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyStartCameraMotion { "
			+ "levelScreenSwitchCid="
			+ levelScreenSwitchCid
			+" }";
		}
	}
	public class NotifyEntityObstacleChange : MessageNotify {
		private List<int> entityIds;
		private bool isObstacleActive;
		public NotifyEntityObstacleChange(List<int> entityIds, bool isObstacleActive) {
		    this.entityIds = entityIds == null ? null : new (entityIds);
		    this.isObstacleActive = isObstacleActive;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyEntityObstacleChange;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyEntityObstacleChange;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_list_int(entityIds);	
			_out.Write_boolean(isObstacleActive);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyEntityObstacleChange { "
			+ "entityIds="
			+ entityIds.ToString<int>()
			+ ", isObstacleActive="
			+ isObstacleActive
			+" }";
		}
	}
	public class NotifyPlayEntityAnimAction : MessageNotify {
		private List<int> entityIds;
		private int actionId;
		public NotifyPlayEntityAnimAction(List<int> entityIds, int actionId) {
		    this.entityIds = entityIds == null ? null : new (entityIds);
		    this.actionId = actionId;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyPlayEntityAnimAction;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyPlayEntityAnimAction;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_list_int(entityIds);	
			_out.Write_int(actionId);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyPlayEntityAnimAction { "
			+ "entityIds="
			+ entityIds.ToString<int>()
			+ ", actionId="
			+ actionId
			+" }";
		}
	}
	public class NotifyLevelTimeShowChange : MessageNotify {
		private int timeHour;
		public NotifyLevelTimeShowChange(int timeHour) {
		    this.timeHour = timeHour;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyLevelTimeShowChange;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyLevelTimeShowChange;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(timeHour);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyLevelTimeShowChange { "
			+ "timeHour="
			+ timeHour
			+" }";
		}
	}
	public class NotifyChangeSceneEffect : MessageNotify {
		private int entityId;
		private int sceneEffectId;
		private bool isAdd;
		public NotifyChangeSceneEffect(int entityId, int sceneEffectId, bool isAdd) {
		    this.entityId = entityId;
		    this.sceneEffectId = sceneEffectId;
		    this.isAdd = isAdd;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyChangeSceneEffect;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyChangeSceneEffect;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(entityId);
			_out.Write_int(sceneEffectId);
			_out.Write_boolean(isAdd);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyChangeSceneEffect { "
			+ "entityId="
			+ entityId
			+ ", sceneEffectId="
			+ sceneEffectId
			+ ", isAdd="
			+ isAdd
			+" }";
		}
	}
	public class UpdateEntityRotationY : MessageNotify {
		private int entityId;
		private LevelEntityType entityType;
		private int rotationY;
		public UpdateEntityRotationY(int entityId, LevelEntityType entityType, int rotationY) {
		    this.entityId = entityId;
		    this.entityType = entityType;
		    this.rotationY = rotationY;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_UpdateEntityRotationY;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_UpdateEntityRotationY;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(entityId);
			_out.Write_byte((sbyte)entityType);
			_out.Write_int(rotationY);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_UpdateEntityRotationY { "
			+ "entityId="
			+ entityId
			+ ", entityType="
			+ entityType
			+ ", rotationY="
			+ rotationY
			+" }";
		}
	}
	public class NotifyActiveCheckPoint : MessageNotify {
		private int entityId;
		private bool isActive;
		public NotifyActiveCheckPoint(int entityId, bool isActive) {
		    this.entityId = entityId;
		    this.isActive = isActive;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyActiveCheckPoint;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyActiveCheckPoint;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(entityId);
			_out.Write_boolean(isActive);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyActiveCheckPoint { "
			+ "entityId="
			+ entityId
			+ ", isActive="
			+ isActive
			+" }";
		}
	}
	public class NotifyBuffChange : MessageNotify {
		private List<LevelBuffChangePOD> changes;
		public NotifyBuffChange(List<LevelBuffChangePOD> changes) {
		    this.changes = changes == null ? null : new (changes);
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyBuffChange;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyBuffChange;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_list_pod(changes);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyBuffChange { "
			+ "changes="
			+ changes.ToString<LevelBuffChangePOD>()
			+" }";
		}
	}
	public class NotifyCustomBgmChange : MessageNotify {
		private int bgmAudioCid;
		public NotifyCustomBgmChange(int bgmAudioCid) {
		    this.bgmAudioCid = bgmAudioCid;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyCustomBgmChange;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyCustomBgmChange;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(bgmAudioCid);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyCustomBgmChange { "
			+ "bgmAudioCid="
			+ bgmAudioCid
			+" }";
		}
	}
	public class NotifyStartStoryDialog : MessageNotify {
		private int cid;
		private int jumpCid;
		private int entityId;
		public NotifyStartStoryDialog(int cid, int jumpCid, int entityId) {
		    this.cid = cid;
		    this.jumpCid = jumpCid;
		    this.entityId = entityId;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyStartStoryDialog;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyStartStoryDialog;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(cid);
			_out.Write_int(jumpCid);
			_out.Write_int(entityId);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyStartStoryDialog { "
			+ "cid="
			+ cid
			+ ", jumpCid="
			+ jumpCid
			+ ", entityId="
			+ entityId
			+" }";
		}
	}
	public class RepoStoryDialogSelectionResult : MessageResult {
	    public RepoStoryDialogSelectionResult(Task<RepoStoryDialogSelectionResult> future): base(future) { }
		public RepoStoryDialogSelectionResult(int code): base(code) { }
		public new RepoStoryDialogSelectionResult SetDelayCall(Action delayCall) { base.SetDelayCall(delayCall); return this; }
        public override MessageResult GetFutureResult(Task task) { return ((Task<RepoStoryDialogSelectionResult>)task).Result; }
		public override int GetMessageId() {return NetMessageId.levelLogic_RepoStoryDialogSelectionResult;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_RepoStoryDialogSelectionResult;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(code);
			return si_p;
		}
		public override string ToString() {
    		return "LevelLogic.SC_RepoStoryDialogSelectionResult { "
			+ "code="
			+ code
			+" }";
		}
	}
	public class NotifyChangeLevelParam : MessageNotify {
		private int key;
		private int value;
		public NotifyChangeLevelParam(int key, int value) {
		    this.key = key;
		    this.value = value;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyChangeLevelParam;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyChangeLevelParam;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(key);
			_out.Write_int(value);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyChangeLevelParam { "
			+ "key="
			+ key
			+ ", value="
			+ value
			+" }";
		}
	}
	public class NotifyHeroFollowerChange : MessageNotify {
		private int id;
		public NotifyHeroFollowerChange(int id) {
		    this.id = id;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyHeroFollowerChange;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyHeroFollowerChange;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(id);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyHeroFollowerChange { "
			+ "id="
			+ id
			+" }";
		}
	}
	public class NotifyChangePlayerCamera : MessageNotify {
		private int cameraCid;
		public NotifyChangePlayerCamera(int cameraCid) {
		    this.cameraCid = cameraCid;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyChangePlayerCamera;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyChangePlayerCamera;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(cameraCid);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyChangePlayerCamera { "
			+ "cameraCid="
			+ cameraCid
			+" }";
		}
	}
	public class NotifyChangeWeather : MessageNotify {
		private int id;
		private int weatherType;
		public NotifyChangeWeather(int id, int weatherType) {
		    this.id = id;
		    this.weatherType = weatherType;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyChangeWeather;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyChangeWeather;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(id);
			_out.Write_int(weatherType);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyChangeWeather { "
			+ "id="
			+ id
			+ ", weatherType="
			+ weatherType
			+" }";
		}
	}
	public class GetMapEntitiesResult : MessageResult {
	    private List<LevelEntityMapPOD> entities;
	    public GetMapEntitiesResult(Task<GetMapEntitiesResult> future): base(future) { }
		public GetMapEntitiesResult(int code): base(code) { }
		public new GetMapEntitiesResult SetDelayCall(Action delayCall) { base.SetDelayCall(delayCall); return this; }
	    internal GetMapEntitiesResult(int code, List<LevelEntityMapPOD> entities){
	        this.code = code;
	        this.entities = entities == null ? null : new (entities);
	    }
        public override MessageResult GetFutureResult(Task task) { return ((Task<GetMapEntitiesResult>)task).Result; }
		public override int GetMessageId() {return NetMessageId.levelLogic_GetMapEntitiesResult;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_GetMapEntitiesResult;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(code);
			_out.Write_list_pod(entities);
			return si_p;
		}
		public override string ToString() {
    		return "LevelLogic.SC_GetMapEntitiesResult { "
			+ "code="
			+ code
			+ ", entities="
			+ entities.ToString<LevelEntityMapPOD>()
			+" }";
		}
	}
	public class UpdateEntityAlert : MessageNotify {
		private int entityId;
		private int targetEntityId;
		private int alertValue;
		public UpdateEntityAlert(int entityId, int targetEntityId, int alertValue) {
		    this.entityId = entityId;
		    this.targetEntityId = targetEntityId;
		    this.alertValue = alertValue;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_UpdateEntityAlert;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_UpdateEntityAlert;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(entityId);
			_out.Write_int(targetEntityId);
			_out.Write_int(alertValue);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_UpdateEntityAlert { "
			+ "entityId="
			+ entityId
			+ ", targetEntityId="
			+ targetEntityId
			+ ", alertValue="
			+ alertValue
			+" }";
		}
	}
	public class UpdateHeroCarrier : MessageNotify {
		private int heroEntityId;
		private int entityId;
		private bool isRemoved;
		public UpdateHeroCarrier(int heroEntityId, int entityId, bool isRemoved) {
		    this.heroEntityId = heroEntityId;
		    this.entityId = entityId;
		    this.isRemoved = isRemoved;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_UpdateHeroCarrier;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_UpdateHeroCarrier;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(heroEntityId);
			_out.Write_int(entityId);
			_out.Write_boolean(isRemoved);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_UpdateHeroCarrier { "
			+ "heroEntityId="
			+ heroEntityId
			+ ", entityId="
			+ entityId
			+ ", isRemoved="
			+ isRemoved
			+" }";
		}
	}
	public class NotifyLeaderHeroChanged : MessageNotify {
		private int heroEntityId;
		private LevelHeroPOD leaderHeroPOD;
		public NotifyLeaderHeroChanged(int heroEntityId, LevelHeroPOD leaderHeroPOD) {
		    this.heroEntityId = heroEntityId;
		    this.leaderHeroPOD = leaderHeroPOD;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyLeaderHeroChanged;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyLeaderHeroChanged;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(heroEntityId);
			_out.Write_pod(leaderHeroPOD);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyLeaderHeroChanged { "
			+ "heroEntityId="
			+ heroEntityId
			+ ", leaderHeroPOD="
			+ leaderHeroPOD
			+" }";
		}
	}
	public class NotifyStartItemSubmit : MessageNotify {
		private int itemSubmitCid;
		public NotifyStartItemSubmit(int itemSubmitCid) {
		    this.itemSubmitCid = itemSubmitCid;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyStartItemSubmit;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyStartItemSubmit;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(itemSubmitCid);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyStartItemSubmit { "
			+ "itemSubmitCid="
			+ itemSubmitCid
			+" }";
		}
	}
	public class ConfirmItemSubmitResult : MessageResult {
	    private bool isSuccess;
	    public ConfirmItemSubmitResult(Task<ConfirmItemSubmitResult> future): base(future) { }
		public ConfirmItemSubmitResult(int code): base(code) { }
		public new ConfirmItemSubmitResult SetDelayCall(Action delayCall) { base.SetDelayCall(delayCall); return this; }
	    internal ConfirmItemSubmitResult(int code, bool isSuccess){
	        this.code = code;
	        this.isSuccess = isSuccess;
	    }
        public override MessageResult GetFutureResult(Task task) { return ((Task<ConfirmItemSubmitResult>)task).Result; }
		public override int GetMessageId() {return NetMessageId.levelLogic_ConfirmItemSubmitResult;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_ConfirmItemSubmitResult;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(code);
			_out.Write_boolean(isSuccess);
			return si_p;
		}
		public override string ToString() {
    		return "LevelLogic.SC_ConfirmItemSubmitResult { "
			+ "code="
			+ code
			+ ", isSuccess="
			+ isSuccess
			+" }";
		}
	}
	public class AcceptQuestResult : MessageResult {
	    public AcceptQuestResult(Task<AcceptQuestResult> future): base(future) { }
		public AcceptQuestResult(int code): base(code) { }
		public new AcceptQuestResult SetDelayCall(Action delayCall) { base.SetDelayCall(delayCall); return this; }
        public override MessageResult GetFutureResult(Task task) { return ((Task<AcceptQuestResult>)task).Result; }
		public override int GetMessageId() {return NetMessageId.levelLogic_AcceptQuestResult;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_AcceptQuestResult;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(code);
			return si_p;
		}
		public override string ToString() {
    		return "LevelLogic.SC_AcceptQuestResult { "
			+ "code="
			+ code
			+" }";
		}
	}
	public class NotifyDrop : MessageNotify {
		private int srcEntityId;
		private List<ItemShowPOD> items;
		public NotifyDrop(int srcEntityId, List<ItemShowPOD> items) {
		    this.srcEntityId = srcEntityId;
		    this.items = items == null ? null : new (items);
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyDrop;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyDrop;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(srcEntityId);
			_out.Write_list_pod(items);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyDrop { "
			+ "srcEntityId="
			+ srcEntityId
			+ ", items="
			+ items.ToString<ItemShowPOD>()
			+" }";
		}
	}
	public class NotifyClearHeroBuff : MessageNotify {
		private long pid;
		private long heroId;
		public NotifyClearHeroBuff(long pid, long heroId) {
		    this.pid = pid;
		    this.heroId = heroId;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyClearHeroBuff;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyClearHeroBuff;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_long(pid);
			_out.Write_long(heroId);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyClearHeroBuff { "
			+ "pid="
			+ pid
			+ ", heroId="
			+ heroId
			+" }";
		}
	}
	public class NotifyTeamWipe : MessageNotify {
		private long pid;
		private long leaderHeroId;
		public NotifyTeamWipe(long pid, long leaderHeroId) {
		    this.pid = pid;
		    this.leaderHeroId = leaderHeroId;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyTeamWipe;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyTeamWipe;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_long(pid);
			_out.Write_long(leaderHeroId);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyTeamWipe { "
			+ "pid="
			+ pid
			+ ", leaderHeroId="
			+ leaderHeroId
			+" }";
		}
	}
	public class NotifyHeroesAttr : MessageNotify {
		private long pid;
		private List<LevelHeroAttrSyncPOD> heroAttrs;
		private AttrChangeReason reason;
		public NotifyHeroesAttr(long pid, List<LevelHeroAttrSyncPOD> heroAttrs, AttrChangeReason reason) {
		    this.pid = pid;
		    this.heroAttrs = heroAttrs == null ? null : new (heroAttrs);
		    this.reason = reason;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyHeroesAttr;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyHeroesAttr;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_long(pid);
			_out.Write_list_pod(heroAttrs);
			_out.Write_byte((sbyte)reason);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyHeroesAttr { "
			+ "pid="
			+ pid
			+ ", heroAttrs="
			+ heroAttrs.ToString<LevelHeroAttrSyncPOD>()
			+ ", reason="
			+ reason
			+" }";
		}
	}
	public class NotifyPlayOrStopEntityEffect : MessageNotify {
		private int singleEntityId;
		private List<int> multiEntityIds;
		private int effectResCid;
		private int bindPointCid;
		private bool isAdd;
		public NotifyPlayOrStopEntityEffect(int singleEntityId, List<int> multiEntityIds, int effectResCid, int bindPointCid, bool isAdd) {
		    this.singleEntityId = singleEntityId;
		    this.multiEntityIds = multiEntityIds == null ? null : new (multiEntityIds);
		    this.effectResCid = effectResCid;
		    this.bindPointCid = bindPointCid;
		    this.isAdd = isAdd;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyPlayOrStopEntityEffect;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyPlayOrStopEntityEffect;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(singleEntityId);
			_out.Write_list_int(multiEntityIds);	
			_out.Write_int(effectResCid);
			_out.Write_int(bindPointCid);
			_out.Write_boolean(isAdd);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyPlayOrStopEntityEffect { "
			+ "singleEntityId="
			+ singleEntityId
			+ ", multiEntityIds="
			+ multiEntityIds.ToString<int>()
			+ ", effectResCid="
			+ effectResCid
			+ ", bindPointCid="
			+ bindPointCid
			+ ", isAdd="
			+ isAdd
			+" }";
		}
	}
	public class NotifyRevive : MessageNotify {
		private long pid;
		public NotifyRevive(long pid) {
		    this.pid = pid;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyRevive;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyRevive;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_long(pid);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyRevive { "
			+ "pid="
			+ pid
			+" }";
		}
	}
	public class RequestReviveResult : MessageResult {
	    public RequestReviveResult(Task<RequestReviveResult> future): base(future) { }
		public RequestReviveResult(int code): base(code) { }
		public new RequestReviveResult SetDelayCall(Action delayCall) { base.SetDelayCall(delayCall); return this; }
        public override MessageResult GetFutureResult(Task task) { return ((Task<RequestReviveResult>)task).Result; }
		public override int GetMessageId() {return NetMessageId.levelLogic_RequestReviveResult;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_RequestReviveResult;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(code);
			return si_p;
		}
		public override string ToString() {
    		return "LevelLogic.SC_RequestReviveResult { "
			+ "code="
			+ code
			+" }";
		}
	}
	public class MarkTrackingEntityResult : MessageResult {
	    public MarkTrackingEntityResult(Task<MarkTrackingEntityResult> future): base(future) { }
		public MarkTrackingEntityResult(int code): base(code) { }
		public new MarkTrackingEntityResult SetDelayCall(Action delayCall) { base.SetDelayCall(delayCall); return this; }
        public override MessageResult GetFutureResult(Task task) { return ((Task<MarkTrackingEntityResult>)task).Result; }
		public override int GetMessageId() {return NetMessageId.levelLogic_MarkTrackingEntityResult;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_MarkTrackingEntityResult;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(code);
			return si_p;
		}
		public override string ToString() {
    		return "LevelLogic.SC_MarkTrackingEntityResult { "
			+ "code="
			+ code
			+" }";
		}
	}
	public class NotifyPushEntity : MessageNotify {
		private int entityId;
		private int maxDistance;
		public NotifyPushEntity(int entityId, int maxDistance) {
		    this.entityId = entityId;
		    this.maxDistance = maxDistance;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyPushEntity;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyPushEntity;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(entityId);
			_out.Write_int(maxDistance);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyPushEntity { "
			+ "entityId="
			+ entityId
			+ ", maxDistance="
			+ maxDistance
			+" }";
		}
	}
	public class SwitchPhasingResult : MessageResult {
	    public SwitchPhasingResult(Task<SwitchPhasingResult> future): base(future) { }
		public SwitchPhasingResult(int code): base(code) { }
		public new SwitchPhasingResult SetDelayCall(Action delayCall) { base.SetDelayCall(delayCall); return this; }
        public override MessageResult GetFutureResult(Task task) { return ((Task<SwitchPhasingResult>)task).Result; }
		public override int GetMessageId() {return NetMessageId.levelLogic_SwitchPhasingResult;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_SwitchPhasingResult;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(code);
			return si_p;
		}
		public override string ToString() {
    		return "LevelLogic.SC_SwitchPhasingResult { "
			+ "code="
			+ code
			+" }";
		}
	}
	public class NotifyStartMiniGame : MessageNotify {
		private LevelMiniGameType type;
		private int miniGameCid;
		public NotifyStartMiniGame(LevelMiniGameType type, int miniGameCid) {
		    this.type = type;
		    this.miniGameCid = miniGameCid;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyStartMiniGame;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyStartMiniGame;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_byte((sbyte)type);
			_out.Write_int(miniGameCid);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyStartMiniGame { "
			+ "type="
			+ type
			+ ", miniGameCid="
			+ miniGameCid
			+" }";
		}
	}
	public class NotifyChangeEntityAudio : MessageNotify {
		private int entityId;
		private int audioCid;
		public NotifyChangeEntityAudio(int entityId, int audioCid) {
		    this.entityId = entityId;
		    this.audioCid = audioCid;
		}
		public override int GetMessageId() {return NetMessageId.levelLogic_NotifyChangeEntityAudio;}
		public override SendPackage ToPackage() {
			SendPackage si_p = NetProtocolHelper.GetSendPackage();
			si_p.Header.Messagid = NetMessageId.levelLogic_NotifyChangeEntityAudio;
			si_p.StartWrite();
			SOutputStream _out = si_p.OutputStream;
			_out.Write_int(entityId);
			_out.Write_int(audioCid);
			return si_p;
		}
		public override string ToString() {
			return "LevelLogic.SC_NotifyChangeEntityAudio { "
			+ "entityId="
			+ entityId
			+ ", audioCid="
			+ audioCid
			+" }";
		}
	}
	private class ReadyToStartRequest : IReceiveMessage
    {
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
		}
        public int GetMessageId() { return NetMessageId.levelLogic_ReadyToStart; }
        public override string ToString()
        {
            return "LevelLogic.ReadyToStart";
        }
    }
	private class EnterRegionRequest : IReceiveMessage
    {
		internal int regionCid;
		internal int portalId;
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
            regionCid = _in.HasRemaining() ? _in.Read_int() : default;
            portalId = _in.HasRemaining() ? _in.Read_int() : default;
		}
        public int GetMessageId() { return NetMessageId.levelLogic_EnterRegion; }
        public override string ToString()
        {
            return "LevelLogic.EnterRegion"+ ", regionCid="+ regionCid+ ", portalId="+ portalId;
        }
    }
	private class MoveRequest : IReceiveMessage
    {
		internal float x;
		internal float y;
		internal float z;
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
            x = _in.HasRemaining() ? _in.Read_float() : default;
            y = _in.HasRemaining() ? _in.Read_float() : default;
            z = _in.HasRemaining() ? _in.Read_float() : default;
		}
        public int GetMessageId() { return NetMessageId.levelLogic_Move; }
        public override string ToString()
        {
            return "LevelLogic.Move"+ ", x="+ x+ ", y="+ y+ ", z="+ z;
        }
    }
	private class InteractRequest : IReceiveMessage
    {
		internal int entityId;
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
            entityId = _in.HasRemaining() ? _in.Read_int() : default;
		}
        public int GetMessageId() { return NetMessageId.levelLogic_Interact; }
        public override string ToString()
        {
            return "LevelLogic.Interact"+ ", entityId="+ entityId;
        }
    }
	private class LeaveRequest : IReceiveMessage
    {
		internal int outRegionCid;
		internal int outPortalMcid;
		internal int anotherLevelCid;
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
            outRegionCid = _in.HasRemaining() ? _in.Read_int() : default;
            outPortalMcid = _in.HasRemaining() ? _in.Read_int() : default;
            anotherLevelCid = _in.HasRemaining() ? _in.Read_int() : default;
		}
        public int GetMessageId() { return NetMessageId.levelLogic_Leave; }
        public override string ToString()
        {
            return "LevelLogic.Leave"+ ", outRegionCid="+ outRegionCid+ ", outPortalMcid="+ outPortalMcid+ ", anotherLevelCid="+ anotherLevelCid;
        }
    }
	private class JumpRequest : IReceiveMessage
    {
		internal int entityId;
		internal float dirX;
		internal float dirZ;
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
            entityId = _in.HasRemaining() ? _in.Read_int() : default;
            dirX = _in.HasRemaining() ? _in.Read_float() : default;
            dirZ = _in.HasRemaining() ? _in.Read_float() : default;
		}
        public int GetMessageId() { return NetMessageId.levelLogic_Jump; }
        public override string ToString()
        {
            return "LevelLogic.Jump"+ ", entityId="+ entityId+ ", dirX="+ dirX+ ", dirZ="+ dirZ;
        }
    }
	private class SwitchPhysicNavModeRequest : IReceiveMessage
    {
		internal bool isPhysical;
		internal float x;
		internal float y;
		internal float z;
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
            isPhysical = _in.HasRemaining() ? _in.Read_boolean() : default;
            x = _in.HasRemaining() ? _in.Read_float() : default;
            y = _in.HasRemaining() ? _in.Read_float() : default;
            z = _in.HasRemaining() ? _in.Read_float() : default;
		}
        public int GetMessageId() { return NetMessageId.levelLogic_SwitchPhysicNavMode; }
        public override string ToString()
        {
            return "LevelLogic.SwitchPhysicNavMode"+ ", isPhysical="+ isPhysical+ ", x="+ x+ ", y="+ y+ ", z="+ z;
        }
    }
	private class TriggerInEntityStateRequest : IReceiveMessage
    {
		internal int entityId;
		internal int state;
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
            entityId = _in.HasRemaining() ? _in.Read_int() : default;
            state = _in.HasRemaining() ? _in.Read_int() : default;
		}
        public int GetMessageId() { return NetMessageId.levelLogic_TriggerInEntityState; }
        public override string ToString()
        {
            return "LevelLogic.TriggerInEntityState"+ ", entityId="+ entityId+ ", state="+ state;
        }
    }
	private class RepoStoryDialogSelectionRequest : IReceiveMessage
    {
		internal List<int> selectionIndexes;
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
            selectionIndexes = _in.HasRemaining() ? _in.Read_list_int() : default;
		}
        public int GetMessageId() { return NetMessageId.levelLogic_RepoStoryDialogSelection; }
        public override string ToString()
        {
            return "LevelLogic.RepoStoryDialogSelection"+ ", selectionIndexes="+ selectionIndexes.ToString<int>();
        }
    }
	private class GetMapEntitiesRequest : IReceiveMessage
    {
		internal int regionCid;
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
            regionCid = _in.HasRemaining() ? _in.Read_int() : default;
		}
        public int GetMessageId() { return NetMessageId.levelLogic_GetMapEntities; }
        public override string ToString()
        {
            return "LevelLogic.GetMapEntities"+ ", regionCid="+ regionCid;
        }
    }
	private class TeleportToEntityRequest : IReceiveMessage
    {
		internal int entityId;
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
            entityId = _in.HasRemaining() ? _in.Read_int() : default;
		}
        public int GetMessageId() { return NetMessageId.levelLogic_TeleportToEntity; }
        public override string ToString()
        {
            return "LevelLogic.TeleportToEntity"+ ", entityId="+ entityId;
        }
    }
	private class ConfirmItemSubmitRequest : IReceiveMessage
    {
		internal List<long> itemIdList;
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
            itemIdList = _in.HasRemaining() ? _in.Read_list_long() : default;
		}
        public int GetMessageId() { return NetMessageId.levelLogic_ConfirmItemSubmit; }
        public override string ToString()
        {
            return "LevelLogic.ConfirmItemSubmit"+ ", itemIdList="+ itemIdList.ToString<long>();
        }
    }
	private class AcceptQuestRequest : IReceiveMessage
    {
		internal int questCid;
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
            questCid = _in.HasRemaining() ? _in.Read_int() : default;
		}
        public int GetMessageId() { return NetMessageId.levelLogic_AcceptQuest; }
        public override string ToString()
        {
            return "LevelLogic.AcceptQuest"+ ", questCid="+ questCid;
        }
    }
	private class RequestReviveRequest : IReceiveMessage
    {
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
		}
        public int GetMessageId() { return NetMessageId.levelLogic_RequestRevive; }
        public override string ToString()
        {
            return "LevelLogic.RequestRevive";
        }
    }
	private class MarkTrackingEntityRequest : IReceiveMessage
    {
		internal int entityId;
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
            entityId = _in.HasRemaining() ? _in.Read_int() : default;
		}
        public int GetMessageId() { return NetMessageId.levelLogic_MarkTrackingEntity; }
        public override string ToString()
        {
            return "LevelLogic.MarkTrackingEntity"+ ", entityId="+ entityId;
        }
    }
	private class PushEntityArriveRequest : IReceiveMessage
    {
		internal int entityId;
		internal int x;
		internal int y;
		internal int z;
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
            entityId = _in.HasRemaining() ? _in.Read_int() : default;
            x = _in.HasRemaining() ? _in.Read_int() : default;
            y = _in.HasRemaining() ? _in.Read_int() : default;
            z = _in.HasRemaining() ? _in.Read_int() : default;
		}
        public int GetMessageId() { return NetMessageId.levelLogic_PushEntityArrive; }
        public override string ToString()
        {
            return "LevelLogic.PushEntityArrive"+ ", entityId="+ entityId+ ", x="+ x+ ", y="+ y+ ", z="+ z;
        }
    }
	private class SwitchPhasingRequest : IReceiveMessage
    {
		internal GameScenePhasing phasing;
		internal int mainPhasingPosX;
		internal int mainPhasingPosY;
		internal int mainPhasingPosZ;
        public void FromPackage(ReceivePackage package)
		{
			SInputStream _in = package.InputStream;
            phasing = _in.HasRemaining() ? (GameScenePhasing)_in.Read_byte() : default;
            mainPhasingPosX = _in.HasRemaining() ? _in.Read_int() : default;
            mainPhasingPosY = _in.HasRemaining() ? _in.Read_int() : default;
            mainPhasingPosZ = _in.HasRemaining() ? _in.Read_int() : default;
		}
        public int GetMessageId() { return NetMessageId.levelLogic_SwitchPhasing; }
        public override string ToString()
        {
            return "LevelLogic.SwitchPhasing"+ ", phasing="+ phasing+ ", mainPhasingPosX="+ mainPhasingPosX+ ", mainPhasingPosY="+ mainPhasingPosY+ ", mainPhasingPosZ="+ mainPhasingPosZ;
        }
    }
	}
#endregion
}